<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        //对象的新增方法  
        //- assign

        // - 用法：Object.assign(对象1，对象2，对象3，....)
        //   - 作用：将后续所有对象的内容  合并到 对象1里面 并将合并好的对象 返回出来
        //   - 注意：对象1 会被改变 其他对象 不会被改变
        //   - 作用 和 jQuery中的$.extend 完全相同
        //   - 因此 我们也可以使用这个方法 来实现对象的拷贝  
        //   - 但一定要注意 用本方法实现的拷贝 是表层拷贝（浅拷贝） 这种拷贝 无法解决对象中深层数据互相影响的问题 
        let name = "jueze";
        let gender = "男";
        let age = "18";
        let obj = {
            name,
            age
        }
        let obj1 = {
            gender,

        }
        let obj2 = {
            age
        }
        let obj3 = Object.assign(obj, obj1, obj2);
        console.log(obj);
        console.log(obj1);
        console.log(obj2);
        console.log(obj3);
        //
        // - keys

        //     - 用法：Object.keys(对象)
        //         - 作用：返回一个数组，数组中的数组项 是 对象中所有属性名

        let obj4 = {
            name: "张三",
            age: 18,
            gender: "man"
        }
        console.log(Object.keys(obj4))
        // - values

        // - 用法：Object.values(对象)
        //     - 作：返回一个数组，数组用中的数组项 是 对象中所有属性值
        console.log(Object.values(obj4))

        //   - JSON.stringify

        //     - 用法：JSON.stringify(js数据)
        //     - 作用：将js数据 转换为json字符串
        let jsonStr = JSON.stringify(obj4);
        console.log(jsonStr)
        //         - JSON.parse

        //     - 用法：JSON.parse(json字符串)
        //     - 作用：将json字符串 转换为js数据
        let obj5 = JSON.parse(jsonStr);
        console.log(obj5)


//   - 注意：JSON的两个方法 不能压缩和解压函数 别的数据 都可以

//   - 使用JSON两个方法 实现 对象的深层拷贝



    </script>
</body>

</html>